package fivm.cross.platform.steamobj.app;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import fivm.cross.platform.ficommon.distinguish.FiObjectId;
import fivm.cross.platform.ficommon.distinguish.GsonSimpleSerializable;
import fivm.cross.platform.steamobj.appcase.CaseConfig;
import fivm.cross.platform.steamobj.controller.AppCaseTaskControlStream;
import fivm.cross.platform.steamobj.log.LogConfigStream;


import java.util.ArrayList;
import java.util.List;

/**
 * 持久化数据对象，app业务及其配置
 * 数据库路径在
 * 1、app_business
 * 2、db.device_ctrl.AppsEnvConfigs.AppConfigs
 * */

public class AppConfigs extends GsonSimpleSerializable {
    @Expose @SerializedName("_id")
    private FiObjectId id=FiObjectId.NewNull;
    @Expose @SerializedName("Enable")          //是否可行
    private boolean enable =false;
    @Expose @SerializedName("AppCollectionName")
    private String appCollectionName="";    //既对应其表名
    @Expose @SerializedName("AppClientWorkPath")
    private String appClientWorkPath="";    //app客户端的工作目录
    @Expose @SerializedName("AppServerWorkPath")
    private String appServerWorkPath="";    //app服务端的工作目录
    @Expose @SerializedName("BusinessLevel")
    private int businessLevel =0;
    @Expose @SerializedName("ServerCaseClassname")
    private String serverCaseClassname="";  //服务器要加载的类名
    @Expose @SerializedName("Name")
    private String name ="";                    //apk 的包名
    @Expose @SerializedName("Plugin")
    private String plugin ="";                  //apk要注入的jar包名

    @Expose @SerializedName("EnableSimulation") //是否启动模拟流程
    private boolean enableSimulation =true;

    @Expose @SerializedName("ControlCommands")      //app控制指令集合
    private AppCaseTaskControlStream appCaseTaskControlStream=new AppCaseTaskControlStream();  //命令行command控制app的方法
    @Expose @SerializedName("DebugConfig")      //调试及其log处理配置
    private LogConfigStream debugConfig ;

    @Expose @SerializedName("SceneConfig")      //现场还原处理
    private SceneConfig sceneConfig;
    @Expose @SerializedName("DroidParamsConfig")    //android的参数处理
    private DroidParamsConfig droidParamsConfig;
    @Expose @SerializedName("ForceUpdate")    //android的参数处理
    private boolean forceUpdate;                //app是否强制更新插件

    @Expose @SerializedName("CaseConfig")    //android的参数处理
    private CaseConfig caseConfig;                //app是否强制更新插件


    @Expose @SerializedName("ActivityConfigs")
    private List<ActivityConfig> listActivityConfig =new ArrayList<ActivityConfig>();




    public FiObjectId getId() {
        return id;
    }

    public void setId(FiObjectId id) {
        this.id = id;
    }

    public String getAppCollectionName() {
        return appCollectionName;
    }

    public void setAppCollectionName(String appCollectionName) {
        this.appCollectionName = appCollectionName;
    }

    public int getBusinessLevel() {
        return businessLevel;
    }

    public void setBusinessLevel(int businessLevel) {
        this.businessLevel = businessLevel;
    }

    public boolean isEnable() {
        return enable;
    }

    public void setEnable(boolean enable) {
        this.enable = enable;
    }



    public boolean isEnableSimulation() {
        return enableSimulation;
    }

    public void setEnableSimulation(boolean enableSimulation) {
        this.enableSimulation = enableSimulation;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPlugin() {
        return plugin;
    }

    public void setPlugin(String plugin) {
        this.plugin = plugin;
    }



    public String getServerCaseClassname() {
        return serverCaseClassname;
    }

    public void setServerCaseClassname(String serverCaseClassname) {
        this.serverCaseClassname = serverCaseClassname;
    }

    public List<ActivityConfig> getListActivityConfig() {
        return listActivityConfig;
    }

    public void setListActivityConfig(List<ActivityConfig> listActivityConfig) {
        this.listActivityConfig = listActivityConfig;
    }

    public AppCaseTaskControlStream getAppCaseTaskControlStream() {
        return appCaseTaskControlStream;
    }

    public void setAppCaseTaskControlStream(AppCaseTaskControlStream appCaseTaskControlStream) {
        this.appCaseTaskControlStream = appCaseTaskControlStream;
    }



    public String getAppClientWorkPath() {
        return appClientWorkPath;
    }

    public void setAppClientWorkPath(String appClientWorkPath) {
        this.appClientWorkPath = appClientWorkPath;
    }

    public String getAppServerWorkPath() {
        return appServerWorkPath;
    }

    public void setAppServerWorkPath(String appServerWorkPath) {
        this.appServerWorkPath = appServerWorkPath;
    }

    public SceneConfig getSceneConfig() {
        return sceneConfig;
    }

    public void setSceneConfig(SceneConfig sceneConfig) {
        this.sceneConfig = sceneConfig;
    }

    public DroidParamsConfig getDroidParamsConfig() {
        return droidParamsConfig;
    }

    public void setDroidParamsConfig(DroidParamsConfig droidParamsConfig) {
        this.droidParamsConfig = droidParamsConfig;
    }

    public LogConfigStream getDebugConfig() {
        return debugConfig;
    }

    public void setDebugConfig(LogConfigStream debugConfig) {
        this.debugConfig = debugConfig;
    }

    public boolean isForceUpdate() {
        return forceUpdate;
    }

    public void setForceUpdate(boolean forceUpdate) {
        this.forceUpdate = forceUpdate;
    }

    public CaseConfig getCaseConfig() {
        return caseConfig;
    }

    public void setCaseConfig(CaseConfig caseConfig) {
        this.caseConfig = caseConfig;
    }


    ////////////////////////////////////////////////////////////////////////////////////////////////////



}
